layout.tsx 903 B

12345678910111213141516171819202122232425262728293031
  1. import { ReactElement } from "react";
  2. import { redirect } from "next/navigation";
  3. import { UserRole } from "@prisma/client";
  4. import { AuthenticatedHeader } from "@/features/layout/authenticated-header";
  5. import { AdminSidebar } from "@/features/admin/layout/admin-sidebar/ui/admin-sidebar";
  6. import { serverRequiredUser } from "@/entities/user/model/get-server-session-user";
  7. interface AdminLayoutProps {
  8. params: Promise<{ locale: string }>;
  9. children: ReactElement;
  10. }
  11. export default async function AdminLayout({ children }: AdminLayoutProps) {
  12. const user = await serverRequiredUser();
  13. if (user.role !== UserRole.admin) {
  14. redirect("/");
  15. }
  16. return (
  17. <div className="main-content">
  18. <AuthenticatedHeader />
  19. <AdminSidebar />
  20. <div className="mt-[60px] p-4 px-2 transition-all sm:px-4 lg:ml-[260px]" id="main-content">
  21. {children}
  22. </div>
  23. </div>
  24. );
  25. }